너는 딥러닝, 심층신경망(DNN), 회귀분석,
주택가격 예측, 모델 성능평가, 데이터 시각화 및
Python 코딩을 전문적으로 수행하는 데이터 분석가이자
대학 교육 전문가이다.

내가 제공하는 Boston 주택 데이터 또는 동일 구조의 CSV 데이터를 이용하여
주택가격 중앙값을 예측하는 심층신경망 회귀분석을 수행하여라.

데이터 제공 방식은 다음 중 하나이다.

① CSV 파일 첨부
② CSV 내용을 복사하여 프롬프트 아래에 붙여넣기
③ Python에서 Boston 자료와 동일한 구조의 데이터 불러오기

먼저 실제 데이터의 변수명과 구조를 확인한 후 분석을 시작하여라.

────────────────────────────────────
[필수 실행 원칙]
────────────────────────────────────

- 개념 설명이나 Python 코드만 제시하고 종료하지 마라.
- 반드시 Python 코드를 실제 실행환경에서 실행하여라.
- 실제 실행으로 산출된 수치·표·그래프만 제시하여라.
- MAE, MSE, RMSE, R² 및 예측값을 임의로 작성하지 마라.
- 오류가 발생하면 원인을 분석하고 코드를 수정한 후 다시 실행하여라.
- 모든 해석은 실제 Python 실행결과를 근거로 작성하여라.
- 전체 데이터를 먼저 표준화한 후 분할하지 마라.
- 반드시 학습·시험자료를 먼저 분할한 후 학습자료에만 Scaler를 적합하여라.
- 시험자료와 신규자료에는 학습자료에서 적합한 동일 Scaler를 적용하여라.
- 종속변수를 표준화하면 예측 후 반드시 원래 단위로 역변환하여라.
- 시험자료를 신경망 구조나 하이퍼파라미터 선택에 사용하지 마라.
- 동일한 데이터 분할에서 기준 회귀모형과 DNN을 비교하여라.
- 단일 random seed 결과만으로 신경망 성능을 확정하지 마라.
- 상관계수 제곱과 결정계수 R²를 구분하여라.
- 신경망 구조가 복잡하다는 이유만으로 우수하다고 판단하지 마라.

────────────────────────────────────
1. 분석 목적
────────────────────────────────────

본 분석의 목적은 다음과 같다.

1. 지역의 주거·환경·교통·조세 특성을 이용하여
   주택가격 중앙값 medv를 예측한다.
2. DNN이 여러 설명변수의 비선형 관계와 상호작용을
   학습하는 과정을 이해한다.
3. 학습자료와 시험자료를 분리하여 일반화 성능을 평가한다.
4. 변수 표준화가 신경망 학습에 필요한 이유를 이해한다.
5. 여러 은닉층 구조와 활성화 함수의 성능을 비교한다.
6. MAE, MSE, RMSE 및 R²로 회귀성능을 평가한다.
7. 실제 주택가격과 예측 주택가격을 비교한다.
8. 변수 중요도와 부분의존도를 통해 가격예측 요인을 분석한다.
9. 기준 회귀모형과 DNN을 비교하여 최종모형을 선정한다.
10. 새로운 지역의 주택가격을 예측한다.

────────────────────────────────────
2. 데이터 구조
────────────────────────────────────

예상 종속변수:

- medv
  · 자가소유 주택가격의 중앙값
  · 원자료 기준 천 달러 단위

예상 설명변수:

- crim
- indus
- nox
- rm
- age
- dis
- tax
- ptratio
- lstat

기본 제외변수:

- zn
- chas
- rad
- black 또는 b

실제 데이터에 존재하는 변수명을 먼저 확인하여라.

다음 표를 작성하여라.

| 변수 | 의미 | 단위 | 역할 | 사용 여부 | 이유 |
|------|------|------|------|-----------|------|

────────────────────────────────────
3. 변수 의미 설명
────────────────────────────────────

다음을 실제 데이터 설명에 맞게 정리하여라.

- crim: 지역별 1인당 범죄율
- indus: 비소매 상업지역 토지비율
- nox: 질소산화물 농도
- rm: 주택당 평균 방 수
- age: 1940년 이전 건축 주택 비율
- dis: 주요 고용센터까지의 가중거리
- tax: 재산세율
- ptratio: 학생·교사 비율
- lstat: 상대적으로 낮은 사회경제적 지위 인구 비율
- medv: 주택가격 중앙값

변수의 의미를 해석할 때
상관관계와 인과관계를 구분하여라.

────────────────────────────────────
4. 데이터 입력
────────────────────────────────────

CSV 파일이 첨부된 경우:

1. Python 실행환경에서 실제 파일명을 탐색한다.
2. pandas.read_csv()로 불러온다.
3. 인코딩 오류가 발생하면 다음을 순서대로 검토한다.
   - utf-8
   - utf-8-sig
   - cp949
   - euc-kr

CSV 내용이 붙여넣어진 경우:

1. 구분자를 확인한다.
2. io.StringIO로 DataFrame을 생성한다.
3. 첫 행이 변수명인지 확인한다.

데이터가 없으면 임의의 결과를 만들지 말고
분석에 필요한 데이터 입력방법을 안내하여라.

────────────────────────────────────
5. 데이터 구조 및 품질 점검
────────────────────────────────────

Python으로 다음을 실제 출력하여라.

- 입력방식
- 파일명
- 전체 행 수와 열 수
- 변수명
- 앞부분 10행
- 뒷부분 5행
- 변수별 자료형
- 결측치 수와 비율
- 중복 행 수
- 무한대 값
- 수치형 변환 실패
- 변수별 최솟값과 최댓값
- 상수형 및 거의 상수형 변수

Boston 자료라면 다음을 확인하여라.

- 전체 표본 수가 506개인가?
- medv가 존재하는가?
- 선택된 설명변수 9개가 존재하는가?

실제 자료가 다르면 실제 데이터를 기준으로 분석하여라.

────────────────────────────────────
6. 윤리적 변수 검토
────────────────────────────────────

인종 또는 사회적 민감정보와 관련된 변수가 존재하면
분석에서 제외 여부를 검토하여라.

Boston 데이터의 `black` 또는 `b` 변수는
역사적으로 인종 관련 정보를 변형한 변수이므로
기본 실습모형에서 제외하여라.

다음을 설명하여라.

- 예측성능이 높더라도 민감정보 사용이 정당화되는 것은 아님
- 주택가격 예측에서 차별적 결과를 강화할 가능성이 있음
- 교육목적에서는 변수의 역사적 맥락과 한계를 설명해야 함

────────────────────────────────────
7. 탐색적 데이터 분석
────────────────────────────────────

다음을 실제 계산하여라.

- 각 변수의 평균
- 표준편차
- 중앙값
- 최솟값
- 최댓값
- 사분위수
- 왜도
- 첨도
- medv와 각 설명변수의 상관계수

다음 그래프를 작성하여라.

1. medv 분포 Histogram
2. 설명변수 Histogram
3. medv와 각 설명변수 산점도
4. 상관계수 Heatmap
5. 주요 변수 Boxplot
6. 주요 변수 Pair Plot

다음을 해석하여라.

- medv와 강한 양의 관계를 보이는 변수
- medv와 강한 음의 관계를 보이는 변수
- 비선형 관계 가능성
- 이상치
- 다중공선성 가능성
- medv 상한값 집중 여부

────────────────────────────────────
8. 종속변수 상한값 검토
────────────────────────────────────

Boston 자료의 medv에는 특정 상한값에 관측값이 집중될 수 있다.

다음을 확인하여라.

- medv 최댓값
- 최댓값과 동일한 관측값 수
- 상한값 비율
- 분포 절단 또는 검열 가능성

상한값 집중은 일반 회귀모형의 예측과 해석에
영향을 줄 수 있음을 설명하여라.

────────────────────────────────────
9. 설명변수와 종속변수 분리
────────────────────────────────────

설명변수:

X = [
    crim, indus, nox, rm, age,
    dis, tax, ptratio, lstat
]

종속변수:

y = medv

다음을 확인하여라.

- medv가 X에 포함되지 않았는가?
- 제외변수가 X에 포함되지 않았는가?
- 변수 순서가 신규자료에도 동일하게 적용되는가?

────────────────────────────────────
10. 학습·검증·시험자료 분할
────────────────────────────────────

기본 설정:

- 학습자료 70%
- 검증자료 15%
- 시험자료 15%
- random_state=1

교재 재현용 비교:

- 학습자료 400개
- 시험자료 나머지 106개
- random_state=1에 대응하는 재현 가능한 방식

다음을 출력하여라.

- 전체 표본 수
- 학습 표본 수
- 검증 표본 수
- 시험 표본 수
- 각 자료의 medv 평균과 표준편차
- 각 자료의 medv 범위

모형 최종평가는 시험자료로 한 번만 수행하여라.

────────────────────────────────────
11. 표준화
────────────────────────────────────

다음 두 Scaler를 구분하여라.

- X_scaler: 설명변수 표준화
- y_scaler: 종속변수 표준화가 필요한 경우 사용

절차:

1. X_train에 X_scaler 적합
2. X_train 변환
3. X_valid와 X_test에는 transform만 적용
4. y_train에만 y_scaler 적합
5. 예측 후 inverse_transform으로 원래 가격단위 복원

중요:

- 전체 데이터를 먼저 표준화하지 마라.
- 신규자료를 별도로 scale하지 마라.
- 신규자료에는 X_train에서 적합한 Scaler를 적용하여라.

────────────────────────────────────
12. 기준모형 구축
────────────────────────────────────

다음 기준모형을 동일한 데이터 분할에서 구축하여라.

1. DummyRegressor
2. LinearRegression
3. Ridge Regression
4. DecisionTreeRegressor
5. RandomForestRegressor
6. GradientBoostingRegressor
7. MLPRegressor 또는 Keras DNN

각 모형의 시험자료 성능을 비교하여라.

| 모형 | MAE | MSE | RMSE | R² |
|------|-----|-----|------|----|

DNN이 반드시 최종모형이라고 가정하지 마라.

────────────────────────────────────
13. 기본 DNN 모형
────────────────────────────────────

교재 구조에 대응하여 다음 기본모형을 구축하여라.

MLPRegressor(
    hidden_layer_sizes=(10,12,20),
    activation="logistic",
    solver="adam",
    max_iter=5000,
    random_state=1
)

다만 교재의 rprop+와 MLPRegressor의 adam은
완전히 동일한 최적화 알고리즘이 아님을 설명하여라.

TensorFlow/Keras를 사용할 경우:

- 입력층: 9개
- 은닉층 1: 10개
- 은닉층 2: 12개
- 은닉층 3: 20개
- 출력층: 1개
- 은닉층 활성화: sigmoid 또는 relu 비교
- 출력층 활성화: linear
- 손실함수: MSE
- Optimizer: Adam

────────────────────────────────────
14. 신경망 구조 시각화
────────────────────────────────────

신경망 구조를 간략한 도식으로 시각화하여라.

다음을 표시하여라.

- 입력변수 9개
- 은닉층 10개
- 은닉층 12개
- 은닉층 20개
- 출력노드 medv 1개

전체 연결가중치를 모두 표시하면 가독성이 매우 낮으므로
구조 중심의 간략도를 우선 제시하여라.

교재 12쪽처럼 모든 연결가중치를 동시에 표시하면
교육적 가독성이 낮아질 수 있음을 설명하여라.

────────────────────────────────────
15. DNN 구조 비교
────────────────────────────────────

다음 구조를 동일 조건에서 비교하여라.

- (5,)
- (10,)
- (10,5)
- (10,12,20)
- (20,10)
- (32,16,8)

각 구조에서 다음을 계산하여라.

- 파라미터 수
- 학습 MAE
- 검증 MAE
- 시험 MAE
- 학습 RMSE
- 검증 RMSE
- 시험 RMSE
- 시험 R²
- 수렴 여부
- 반복횟수
- 학습시간

다음 표를 작성하여라.

| 구조 | 파라미터 수 | Validation RMSE | Test RMSE | Test R² | 수렴 |
|------|-------------|-----------------|-----------|---------|------|

────────────────────────────────────
16. 활성화 함수 비교
────────────────────────────────────

다음 활성화 함수를 비교하여라.

- logistic
- tanh
- relu

동일한 신경망 구조와 데이터 분할을 사용하여라.

다음을 비교하여라.

- 수렴 여부
- 반복횟수
- 검증 RMSE
- 시험 RMSE
- 시험 R²

sigmoid 계열 활성화는 깊은 구조에서
Gradient Vanishing 가능성이 있음을 설명하여라.

────────────────────────────────────
17. Optimizer 비교
────────────────────────────────────

scikit-learn에서 다음 Solver를 비교하여라.

- lbfgs
- adam
- sgd

Keras를 사용할 경우:

- SGD
- Adam
- RMSprop

다음을 비교하여라.

- 학습시간
- 수렴 여부
- 최종 손실
- 검증 RMSE
- 시험 RMSE

작은 데이터에서는 lbfgs가 안정적인 성능을 보일 수 있음을 설명하여라.

────────────────────────────────────
18. 학습률과 정규화
────────────────────────────────────

다음 후보를 비교하여라.

learning_rate_init:

- 0.0001
- 0.001
- 0.01
- 0.05

alpha:

- 0.0001
- 0.001
- 0.01
- 0.1
- 1.0

다음을 설명하여라.

- 학습률이 너무 작으면 수렴이 느림
- 학습률이 너무 크면 손실이 진동하거나 발산
- alpha는 가중치 크기에 패널티를 주어 과적합 완화
- 작은 표본과 복잡한 구조에서는 정규화가 중요

────────────────────────────────────
19. 하이퍼파라미터 탐색
────────────────────────────────────

GridSearchCV 또는 RandomizedSearchCV를 사용하여라.

후보:

hidden_layer_sizes:

- (5,)
- (10,)
- (20,)
- (10,5)
- (10,12,20)
- (20,10)
- (32,16,8)

activation:

- tanh
- relu
- logistic

solver:

- lbfgs
- adam

alpha:

- 0.0001
- 0.001
- 0.01
- 0.1
- 1.0

learning_rate_init:

- 0.0001
- 0.001
- 0.01

평가기준:

- negative RMSE
- 5-fold 교차검증
- 필요하면 RepeatedKFold

하이퍼파라미터 탐색은 학습자료에서만 수행하여라.

────────────────────────────────────
20. 반복 Seed 안정성
────────────────────────────────────

신경망은 초기 가중치에 따라 결과가 달라질 수 있다.

최종 후보구조를 다음 seed로 반복 학습하여라.

- 0부터 29까지 총 30회

각 seed에서 다음을 저장하여라.

- Validation RMSE
- Test RMSE
- Test R²
- 반복횟수
- 수렴 여부

다음을 계산하여라.

- 평균
- 표준편차
- 중앙값
- 최솟값
- 최댓값

단일 seed 결과만으로 DNN 성능을 확정하지 마라.

────────────────────────────────────
21. 학습손실과 수렴 확인
────────────────────────────────────

다음을 출력하여라.

- loss_curve_
- 실제 반복횟수
- 최종 손실
- ConvergenceWarning
- 수렴 여부

손실곡선을 작성하여 다음을 확인하여라.

- 손실이 안정적으로 감소하는가?
- 마지막까지 계속 감소하는가?
- 진동 또는 발산하는가?
- 반복횟수가 충분한가?
- 구조가 지나치게 복잡한가?

────────────────────────────────────
22. 시험자료 예측
────────────────────────────────────

시험자료에 대해 다음을 산출하여라.

- 실제 medv
- 표준화 예측값
- 원단위 예측값
- 잔차
- 절대오차
- 제곱오차

다음 표를 작성하여라.

| 실제가격 | 예측가격 | 잔차 | 절대오차 | 제곱오차 |
|----------|----------|------|----------|----------|

medv가 천 달러 단위라면
원단위 RMSE의 의미를 천 달러 기준으로 설명하여라.

────────────────────────────────────
23. 회귀성능 평가
────────────────────────────────────

시험자료 기준으로 다음을 계산하여라.

- MAE
- MSE
- RMSE
- R²
- Median Absolute Error
- Max Error
- Explained Variance

반드시 원래 medv 단위에서 계산하여라.

필요하면 표준화 단위의 결과도 보조적으로 제시하되
두 결과를 명확히 구분하여라.

────────────────────────────────────
24. 상관계수 제곱과 R² 비교
────────────────────────────────────

다음을 모두 계산하여 비교하여라.

1. Pearson correlation²
2. sklearn r2_score

다음 표를 작성하여라.

| 지표 | 값 | 의미 |
|------|----|------|
| Correlation² | | 선형적 동행 정도 |
| R² | | 평균예측 대비 오차 감소 정도 |

두 값이 다르면 그 이유를 설명하여라.

최종 회귀성능은 r2_score를 중심으로 해석하여라.

────────────────────────────────────
25. 실제값–예측값 시각화
────────────────────────────────────

다음 그래프를 작성하여라.

- x축: Actual medv
- y축: Predicted medv
- 기준선: y=x
- 시험자료 점
- RMSE와 R² 표시

다음을 해석하여라.

- 기준선에 얼마나 가까운가?
- 낮은 가격을 과대예측하는가?
- 높은 가격을 과소예측하는가?
- 상한값 부근에서 오차가 커지는가?
- 이상치가 있는가?

────────────────────────────────────
26. 잔차분석
────────────────────────────────────

다음 그래프를 작성하여라.

1. 예측가격 대 잔차
2. 실제가격 대 잔차
3. 잔차 Histogram
4. 잔차 Q-Q Plot
5. 절대오차 분포

다음을 확인하여라.

- 잔차 평균
- 체계적 패턴
- 이분산성
- 고가격 구간의 오차
- 극단 잔차

신경망 회귀에서 잔차 정규성이 필수 가정은 아니지만
모델 오류구조를 진단하는 데 유용함을 설명하여라.

────────────────────────────────────
27. 교차검증
────────────────────────────────────

다음 검증을 수행하여라.

- RepeatedKFold
- 5-fold
- 10회 반복
- random_state=42

각 Fold 안에서 다음을 수행하여라.

- 결측치 대체
- 설명변수 표준화
- DNN 학습
- 예측
- 역변환
- 성능계산

다음 지표를 평균 ± 표준편차로 제시하여라.

- MAE
- RMSE
- R²

────────────────────────────────────
28. 변수 중요도
────────────────────────────────────

DNN에는 선형회귀계수처럼 직접적인 변수계수가 없으므로
다음 방법을 사용하여라.

1. Permutation Importance
2. 변수 하나씩 제거한 성능 변화
3. 가능한 경우 SHAP
4. 필요하면 입력–은닉 가중치 기반 중요도

다음 표를 작성하여라.

| 변수 | Permutation RMSE 증가 | 표준편차 | 순위 |
|------|------------------------|----------|------|

변수 중요도는 인과효과가 아니라
모형의 예측성능 기여도임을 설명하여라.

────────────────────────────────────
29. 부분의존도
────────────────────────────────────

주요 변수에 대해 Partial Dependence Plot을 작성하여라.

우선 대상:

- rm
- lstat
- nox
- dis
- ptratio

다음을 해석하여라.

- 방 수가 증가할 때 예측가격 변화
- 저소득층 비율 증가에 따른 예측가격 변화
- 질소산화물 농도와 예측가격 관계
- 비선형 임계점
- 변수 상호작용 가능성

PDP는 인과관계를 의미하지 않음을 명시하여라.

────────────────────────────────────
30. SHAP 분석
────────────────────────────────────

실행환경에서 SHAP 사용이 가능하면 다음을 수행하여라.

- SHAP Summary Plot
- SHAP Bar Plot
- 주요 변수 Dependence Plot
- 대표 관측값 Waterfall Plot
- 과대예측 사례
- 과소예측 사례

SHAP 실행이 불가능하면 결과를 만들지 말고
Permutation Importance와 PDP로 대체하여라.

────────────────────────────────────
31. 기준모형과 DNN 비교
────────────────────────────────────

다음 표를 작성하여라.

| 모형 | MAE | RMSE | R² | 학습시간 | 해석 가능성 |
|------|-----|------|----|----------|-------------|
| Linear Regression | | | | | |
| Ridge | | | | | |
| Decision Tree | | | | | |
| Random Forest | | | | | |
| Gradient Boosting | | | | | |
| DNN | | | | | |

성능 차이가 작으면
더 단순하고 해석 가능한 모형을 우선 검토하여라.

────────────────────────────────────
32. 신규 주택 데이터 예측
────────────────────────────────────

사용자가 제공한 신규 자료에 대해 예측하여라.

필수 설명변수:

- crim
- indus
- nox
- rm
- age
- dis
- tax
- ptratio
- lstat

다음을 확인하여라.

- 변수명
- 변수 순서
- 결측값
- 학습자료 범위 내 여부
- 이상치 여부

중요:

- 신규 데이터 자체로 scale하지 마라.
- 학습자료에서 적합한 X_scaler를 적용하여라.
- 예측값은 y_scaler로 역변환하여 원래 가격단위로 제시하여라.

다음을 출력하여라.

| 관측값 | 예측 medv | 예측가격 단위 | 범위 내 여부 |
|--------|-----------|----------------|--------------|

────────────────────────────────────
33. 최종 모형 선정
────────────────────────────────────

다음을 종합하여 최종모형을 선정하여라.

- 검증 RMSE
- 시험 RMSE
- 시험 R²
- 교차검증 평균과 표준편차
- 반복 seed 안정성
- 수렴 여부
- 모델 복잡도
- 학습시간
- 잔차 패턴
- 기준모형 대비 개선
- 해석 가능성

성능 차이가 크지 않으면
더 단순한 구조 또는 비신경망 모형을 선택하여라.

다음 형식으로 작성하여라.

“본 데이터에서는 ○○모형이 시험자료 RMSE ○○,
R² ○○를 보였으며, 반복 교차검증의 변동성도 상대적으로 낮았다.
따라서 예측성능과 모델 복잡도를 종합하여
○○모형을 최종모형으로 선정하였다.”

────────────────────────────────────
34. 분석의 한계
────────────────────────────────────

다음을 실제 결과와 연결하여 설명하여라.

- 표본 수가 506개로 깊은 신경망에는 크지 않음
- 설명변수가 제한적임
- 주택가격 상한값이 존재할 수 있음
- 역사적 지역자료로 현재 시장에 직접 적용하기 어려움
- 민감한 사회적 변수가 포함된 원 데이터의 윤리적 한계
- 지역·시점 변화에 따라 모형성능이 달라질 수 있음
- DNN은 선형회귀보다 해석이 어려움
- 하이퍼파라미터와 초기값에 따라 성능이 변함
- 예측결과는 인과관계를 의미하지 않음
- 외부 데이터에서 재검증이 필요함

────────────────────────────────────
35. 결과파일 저장
────────────────────────────────────

다음 CSV 파일을 생성하여라.

- boston_data_summary.csv
- boston_variable_roles.csv
- boston_train_validation_test.csv
- boston_model_comparison.csv
- boston_dnn_architecture_comparison.csv
- boston_hyperparameter_results.csv
- boston_seed_stability.csv
- boston_test_predictions.csv
- boston_regression_metrics.csv
- boston_residuals.csv
- boston_permutation_importance.csv
- boston_new_predictions.csv
- boston_final_results.csv

다음 Excel 파일을 생성하여라.

- boston_dnn_regression_results.xlsx

Excel Sheet:

- Original_Data
- Data_Summary
- Variable_Roles
- Train_Data
- Validation_Data
- Test_Data
- Baseline_Models
- DNN_Architectures
- Hyperparameter_Search
- Seed_Stability
- Test_Predictions
- Regression_Metrics
- Residuals
- Variable_Importance
- New_Predictions
- Final_Results

다음 PNG 파일을 생성하여라.

- boston_target_distribution.png
- boston_correlation_heatmap.png
- boston_scatterplots.png
- boston_dnn_architecture.png
- boston_loss_curve.png
- boston_architecture_comparison.png
- boston_actual_vs_predicted.png
- boston_residual_plot.png
- boston_residual_histogram.png
- boston_model_comparison.png
- boston_permutation_importance.png
- boston_partial_dependence.png
- boston_shap_summary.png

저장 후 실제 파일이 생성되었는지 확인하여라.

────────────────────────────────────
36. 단계별 Python 코딩
────────────────────────────────────

코드는 다음 단계로 구분하여 작성하여라.

[코딩 1단계] 라이브러리 불러오기
[코딩 2단계] Boston 또는 CSV 데이터 불러오기
[코딩 3단계] 데이터 구조 확인
[코딩 4단계] 변수 의미와 윤리적 변수 검토
[코딩 5단계] 결측치·중복·이상치 점검
[코딩 6단계] 탐색적 데이터 분석
[코딩 7단계] 설명변수와 종속변수 분리
[코딩 8단계] 학습·검증·시험자료 분할
[코딩 9단계] 학습자료 기준 표준화
[코딩 10단계] 기준 회귀모형 구축
[코딩 11단계] 기본 DNN 구축
[코딩 12단계] 신경망 구조 시각화
[코딩 13단계] 구조별 DNN 비교
[코딩 14단계] 활성화 함수 비교
[코딩 15단계] Solver 비교
[코딩 16단계] 학습률·정규화 비교
[코딩 17단계] 하이퍼파라미터 탐색
[코딩 18단계] 반복 seed 안정성
[코딩 19단계] 학습손실과 수렴 확인
[코딩 20단계] 시험자료 예측
[코딩 21단계] 예측값 원단위 역변환
[코딩 22단계] MAE·MSE·RMSE·R²
[코딩 23단계] 상관계수 제곱과 R² 비교
[코딩 24단계] 실제값–예측값 시각화
[코딩 25단계] 잔차분석
[코딩 26단계] 반복 교차검증
[코딩 27단계] Permutation Importance
[코딩 28단계] PDP
[코딩 29단계] SHAP
[코딩 30단계] 기준모형과 DNN 비교
[코딩 31단계] 신규 주택가격 예측
[코딩 32단계] 최종모형 선정
[코딩 33단계] 결과 저장

각 단계는 다음 순서로 제시하여라.

1. 무엇을 하는 단계인가?
2. 왜 필요한가?
3. Python 코드
4. Python 실제 실행결과
5. 결과 해석
6. 다음 단계와의 연결

모든 단계가 완료된 후
처음부터 끝까지 한 번에 실행 가능한
전체 통합 Python 코드를 다시 제시하여라.

────────────────────────────────────
37. Python 코드 작성 원칙
────────────────────────────────────

기본 라이브러리:

- pandas
- numpy
- matplotlib
- scipy
- scikit-learn
- openpyxl

기본 신경망:

- MLPRegressor

필요하면:

- tensorflow
- keras
- shap

핵심 클래스와 함수:

- StandardScaler
- Pipeline
- TransformedTargetRegressor
- train_test_split
- MLPRegressor
- GridSearchCV
- RandomizedSearchCV
- RepeatedKFold
- LinearRegression
- Ridge
- DecisionTreeRegressor
- RandomForestRegressor
- GradientBoostingRegressor
- mean_absolute_error
- mean_squared_error
- r2_score
- permutation_importance
- PartialDependenceDisplay

주요 코드에는 한국어 주석을 작성하여라.

────────────────────────────────────
38. 오류 발생 시 처리
────────────────────────────────────

다음 오류가 발생하면 종료하지 말고
원인을 분석하고 수정하여 다시 실행하여라.

- 데이터 파일 없음
- Boston 데이터 로드 오류
- 변수명 불일치
- 결측치 존재
- 수치형 변환 오류
- 학습·시험 분할 오류
- Scaler 오류
- 예측값 역변환 오류
- DNN 미수렴
- ConvergenceWarning
- 손실값 NaN
- GridSearch 오류
- 신규자료 변수 누락
- 신규자료 변수 순서 오류
- SHAP 실행 오류
- Excel 저장 오류
- 한글 폰트 오류

────────────────────────────────────
39. 결과 검증
────────────────────────────────────

최종 결과 전 다음을 확인하여라.

- medv가 설명변수에 포함되지 않았는가?
- 민감변수가 제외되었는가?
- 데이터 분할 전에 전체 표준화를 하지 않았는가?
- Scaler가 학습자료에만 적합되었는가?
- 시험자료가 모형 선택에 사용되지 않았는가?
- 신규자료에 학습 Scaler를 적용했는가?
- 종속변수 예측값을 원단위로 역변환했는가?
- MAE·MSE·RMSE가 원래 medv 단위인가?
- RMSE가 MSE의 제곱근과 일치하는가?
- R²가 r2_score로 계산되었는가?
- Correlation²와 R²를 구분했는가?
- 모든 모형에 동일한 시험자료를 사용했는가?
- 수렴하지 않은 DNN을 최종모형으로 선정하지 않았는가?
- 저장파일이 실제로 생성되었는가?

문제가 있으면 수정 후 다시 실행하여라.

────────────────────────────────────
40. 최종 답변 출력 순서
────────────────────────────────────

① 분석 목적  
② 데이터 구조와 변수 의미  
③ 윤리적 변수 검토  
④ 데이터 품질 점검  
⑤ 탐색적 데이터 분석  
⑥ 설명변수와 종속변수 구성  
⑦ 학습·검증·시험자료 분할  
⑧ 학습자료 기준 표준화  
⑨ 기준 회귀모형  
⑩ DNN 원리와 기본구조  
⑪ 신경망 구조 시각화  
⑫ 구조별 DNN 성능  
⑬ 활성화 함수·Solver 비교  
⑭ 하이퍼파라미터 탐색  
⑮ 반복 Seed 안정성  
⑯ 학습손실과 수렴  
⑰ 시험자료 예측  
⑱ 원단위 역변환  
⑲ MAE·MSE·RMSE·R²  
⑳ 상관계수 제곱과 R² 비교  
㉑ 실제값–예측값 그래프  
㉒ 잔차분석  
㉓ 반복 교차검증  
㉔ 변수 중요도  
㉕ PDP와 SHAP  
㉖ 기준모형과 DNN 비교  
㉗ 신규 주택가격 예측  
㉘ 최종모형 선정  
㉙ 분석의 한계  
㉚ 단계별 Python 코드  
㉛ Python 실제 실행결과  
㉜ 전체 통합 Python 코드  
㉝ 생성된 CSV·Excel·PNG 파일  

모든 수치, 표, 그래프 및 결론은
실제 Python 실행결과만을 사용하여라.

────────────────────────────────────
[사용자 입력정보]
────────────────────────────────────

[분석 목적 시작]

주거·환경·교통·조세 특성을 이용하여
Boston 지역의 주택가격 중앙값 medv를 예측하고,
DNN과 여러 회귀모형의 성능을 비교한다.

[분석 목적 끝]

[종속변수 시작]

medv

[종속변수 끝]

[설명변수 시작]

crim, indus, nox, rm, age, dis, tax, ptratio, lstat

[설명변수 끝]

[제외변수 시작]

zn, chas, rad, black, b

[제외변수 끝]

[기본 DNN 구조 시작]

hidden_layer_sizes=(10,12,20)
activation=logistic
solver=adam
max_iter=5000
random_state=1

[기본 DNN 구조 끝]

[비교 구조 시작]

(5,)
(10,)
(10,5)
(10,12,20)
(20,10)
(32,16,8)

[비교 구조 끝]

[검증방법 시작]

학습 70%, 검증 15%, 시험 15%
Repeated 5-fold Cross-validation × 10회

[검증방법 끝]

[평가지표 시작]

MAE
MSE
RMSE
R²

보조지표:
Correlation²

[평가지표 끝]

[신규 주택 데이터 시작]

신규자료가 있으면 9개 설명변수를 입력하세요.

없으면:
신규자료 없음

[신규 주택 데이터 끝]

[CSV 데이터 시작]

파일을 첨부한 경우 비워두세요.
CSV 내용을 사용할 경우 변수명을 포함하여 붙여넣으세요.

[CSV 데이터 끝]